package com.xebest.web.service.impl;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import com.xebest.common.enums.erp.storehouse.VenStoreCheckStatusEnum;
import com.xebest.common.enums.erp.storehouse.VenStoreNegativeFlagEnum;
import com.xebest.common.enums.erp.storehouse.VenStorePricingTypeEnum;
import com.xebest.common.enums.erp.storehouse.VenStoreStatusEnum;
import com.xebest.common.enums.erp.storehouse.VenStoreTmsStatusEnum;
import com.xebest.common.enums.erp.storehouse.VenStoreTypeEnum;
import com.xebest.common.util.XeBaseUtil;
import com.xebest.util.DateUtil;
import com.xebest.util.SysSetBeanUtils;
import com.xebest.web.controller.export.XeVenInventoryExportDTO;
import com.xebest.web.controller.export.XeVenStoreCheckExportDTO;
import com.xebest.web.controller.export.XeVenStoreExportDTO;
import com.xebest.web.mapper.read.XeVenStoreCenterExportMapper;
import com.xebest.web.service.XeVenStoreCenterExportService;
/**
 * 仓储中心导出
 * @desc: xebest-erp  
 * @author: 赵盼飞  
 * @createTime: 2017年6月26日 下午5:23:42  
 * @history:  
 * @version: v1.0
 */
@Service
public class XeVenStoreCenterExportServiceImpl implements XeVenStoreCenterExportService{
	
	@Autowired
	private XeVenStoreCenterExportMapper storeCenterExportMapper;

	/**
	 * 导出仓库列表
	 */
	@Override
	public List<XeVenStoreExportDTO> queryStoreExportList(Map<String, Object> paramMap) {
		List<XeVenStoreExportDTO> storeExportList = storeCenterExportMapper.queryStoreExportList(paramMap);
		//数字字典转字符串
		for(XeVenStoreExportDTO store: storeExportList){
			
			SysSetBeanUtils.codeReversionStr("storeStatus", store, VenStoreStatusEnum.class);
			SysSetBeanUtils.codeReversionStr("tmsStatus", store, VenStoreTmsStatusEnum.class);
			SysSetBeanUtils.codeReversionStr("negativeFlag", store, VenStoreNegativeFlagEnum.class);
			if(!StringUtils.isEmpty(store.getStoreType())){
				SysSetBeanUtils.codeReversionStr("storeType", store, VenStoreTypeEnum.class);
			}
			String area = XeBaseUtil.baseUtil.getOrgAreaName(Integer.parseInt(store.getAreaId()));
			store.setStoreArea(area);
			
			if(!StringUtils.isEmpty(store.getCoverAreaIds())){
				String [] CoverAreaIdArr = store.getCoverAreaIds().split("_");
				String coverAreaIds = "";
				for (int i = 0; i < CoverAreaIdArr.length; i++) {
					String areaf = XeBaseUtil.baseUtil.getOrgAreaName(Integer.valueOf(CoverAreaIdArr[i]));
					coverAreaIds += areaf +";";
				}
				store.setCoverAreaId(coverAreaIds);
			}
		}
		
		return storeExportList;  
	}

	/**
	 * 获取库存监控列表
	 */
	@Override
	public List<XeVenInventoryExportDTO> queryStoreInventoryExportList(Map<String, Object> paramMap) {
		List<XeVenInventoryExportDTO> storeInventoryExportList = storeCenterExportMapper.queryStoreInventoryExportList(paramMap);
		return storeInventoryExportList;  
	}

	/**
	 * 获取盘点单导出列表
	 */
	@Override
	public List<XeVenStoreCheckExportDTO> queryStoreCheckExportList(Map<String, Object> paramMap) {
		  
		List<XeVenStoreCheckExportDTO> storeCheckList =  storeCenterExportMapper.queryStoreCheckExportList(paramMap);
		for(XeVenStoreCheckExportDTO storeCheck:storeCheckList){
			SysSetBeanUtils.codeReversionStr("checkStockStatus", storeCheck, VenStoreCheckStatusEnum.class);
			if(!StringUtils.isEmpty(storeCheck.getDurationDate())){
				storeCheck.setDurationDate(DateUtil.formatMillisecondTime(Long.valueOf(storeCheck.getDurationDate())));
			}
		}
		return storeCheckList;  
	}

	/**
	 * 获取盘点单导出明细
	 */
	@Override
	public List<XeVenStoreCheckExportDTO> queryStoreCheckDetailExportList(Map<String, Object> paramMap) {
		  
		List<XeVenStoreCheckExportDTO>  storeCheckDetailList = storeCenterExportMapper.queryStoreCheckDetailExportList(paramMap);
		for(XeVenStoreCheckExportDTO storeCheckd:storeCheckDetailList){
			SysSetBeanUtils.codeReversionStr("checkStockStatus", storeCheckd, VenStoreCheckStatusEnum.class);
			SysSetBeanUtils.codeReversionStr("pricingType", storeCheckd, VenStorePricingTypeEnum.class);
			if(!StringUtils.isEmpty(storeCheckd.getDurationDate())){
				storeCheckd.setDurationDate(DateUtil.formatMillisecondTime(Long.valueOf(storeCheckd.getDurationDate())));
			}
		}
		return storeCheckDetailList;  
	}
	
	
}
